const express = require("express");
const router = express.Router();

const moment = require("moment"); // 日期处理类库
const AccountModel = require("../mongodb/models/Account");

const SOURCE_ERROR = "数据源获取失败";
const CREATE_ERROR = "数据项创建失败";
const DELETE_ERROR = "数据项删除失败";

router.get("/", (req, res) => {
    res.redirect("/accounts");
}); // 根目录重定向至列表页
router.get("/accounts", (req, res) => {
    AccountModel.find().sort({ date: "desc" }).exec((error, data) => {
        if (error) {
            console.log(error);
            res.status(500).send(SOURCE_ERROR);
            return;
        }
        console.log(data);
        res.render("accounts", { accounts: data, moment });
    }); // 根据日期倒序排列，最新记录在最前
}); // 记账簿项目列表模板
router.get("/account", (req, res) => {
    res.render("account");
}); // 记账簿项目创建模板
router.post("/account", (req, res) => {
    const { date, type, money } = req.body;
    AccountModel.create({
        ...req.body,
        date: moment(date).toDate(), //  转换成日期格式
        type: Number(type),  // 转换成数字类型(标记)
        money: Number(money) // 转换成数字类型(金额)
    }, error => {
        if (error) {
            console.log(error);
            res.status(500).send(CREATE_ERROR);
            return;
        }
        res.redirect("/accounts"); // 项目创建操作完成后，跳转到列表页
    });
}); // 记账簿项目创建操作
router.get("/account/:id", (req, res) => {
    AccountModel.deleteOne({
        _id: req.params.id
    }, error => {
        if (error) {
            console.log(error);
            res.status(500).send(DELETE_ERROR);
            return;
        }
        res.redirect("/accounts"); // 项目删除操作完成后，重新渲染列表
    });
}); // 记账簿项目删除操作
module.exports = router;
